//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __IANIMATEDOBJECT_H__
#define __IANIMATEDOBJECT_H__

////////////////////////////////////////////////////////////////////////////////////////////////////

namespace  irr
{	
	namespace scene 
	{	
		class ISceneNode;	
		class ITimelineController;
	}

	namespace collada
	{
		class CEventsManager;
		class CSceneNodeAnimator;
	}
}

//#include "CColladaSceneNodeAnimator.h"

class CGlobals;
extern CGlobals* g;

struct TAnim
{
	int		m_ID;
	int		m_length;
	int		m_start;
	int		m_end;
	int		m_time;
	float	m_speed;
	float	m_distance;
	bool	m_loop;
	bool	m_back;
	bool	m_move;
	bool	m_direction;

};

class IAnimatedObject
{
protected:

	int											m_lastTime;
	bool										m_isCrtAnimFinished;

public:
	irr::scene::ISceneNode*						m_SceneNode;
	irr::collada::CSceneNodeAnimator*			m_animatorNode;
	irr::scene::ITimelineController*			m_timelineController;
	irr::collada::CEventsManager*				m_eventsManager;

//public:
//	struct TAnim				 				m_curAnim;
//	IAnimatedObject();
//	virtual ~IAnimatedObject();
//
//	virtual void LoadMeshAndAnimator(const char* meshFilename, const char* animatorFilename = 0);
//	void SetMeshAndAnimator(irr::scene::ISceneNode* meshNode, irr::collada::CSceneNodeAnimator *animatorNode);
//	void SetMeshAndAnimator();
//	bool HasAnim();
//	void SetAnim(int newAnim, bool loop = false);
//	void RestartCurrentAnim();
//	void SetAnimWithSpeed(int newAnim, float speed, bool loop = false);
//	virtual void UpdateAnim(int fixedDT=-1);
//
//	bool IsGoingToLoop(int ms);
//
//	bool IsCurrentAnim(int anim)
//	{
//		return (m_curAnim.m_ID == anim);
//	}
//
//	bool IsCurrentAnimPlayed(int percent)
//	{
//		if(m_curAnim.m_ID == -1)
//			return false;
//
//		if(m_curAnim.m_time >= percent * m_curAnim.m_length * 0.01f)
//			return true;
//
//		return false;
//	}
//
//	bool IsCurrentAnimPlayingBackward()
//	{
//		return m_curAnim.m_back;
//	}
//
//	bool IsCurrentAnimFinished()
//	{
//		return m_isCrtAnimFinished;
//	}
//
//	TAnim& GetCurrentAnim()
//	{
//		return m_curAnim;
//	}
//
//	virtual void SwitchAnim();
};

#endif //__IANIMATEDOBJECT_H__

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
